<?php

/**
 * @author Rizky Tahara Shita
 * @website http://tahara.web.id
 * @email rizky.tahara@gmail.com
 * @copyright b'IT Cyber Solution
 */

require_once(APPPATH.'controllers/admin/applications.php');
class History extends Applications
{
	public function __construct()
	{
		parent::__construct();

		/**
		 * @description check the session variables
		 */
		$this->M_login->session_check();

		/**
		 * @description the URL
		 */
		$this->bz_segment['END'] = 5;
		$this->bz_segment['URL'] = $this->M_functions->segment_create();
		$this->bz_segment['SITE_URL'] = site_url($this->bz_segment['URL']);

		/**
		 * @description access rights
		 */
		$this->access_rights = $this->M_menu->valid_check('db_default', $this->session->userdata('session_user_id'));
		$this->access_rights = array
			(
				'ADD' => in_array('add', $this->access_rights) ? TRUE : FALSE
				, 'EDIT' => in_array('edit', $this->access_rights) ? TRUE : FALSE
				, 'DELETE' => FALSE
			);

		/**
		 * @description initialize variables for database
		 */
		$this->tbl_attr = array
			(
				'TABLE' => array
					(
						'NAME' => 'hris_employee_data'
						, 'NAME_ALIAS' => 'hris_employee_data a'
						, 'PRIMARY' => array
							(
								'SHOW' => FALSE
								, 'DATA' => array('id')
							)
					)
				, 'TABLE_MODAL' => array
					(
						'NAME' => 'hris_employee_attendance'
						, 'NAME_ALIAS' => 'hris_employee_attendance b'
						, 'PRIMARY' => array
							(
								'SHOW' => FALSE
								, 'DATA' => array('date_in', 'data__id')
							)
					)
				, 'VIEW_DETAIL' => array
					(
						'HEADING' => array
							(
								$this->lang->line('hris_date')
								, $this->lang->line('hris_start')
								, $this->lang->line('hris_end')
								, $this->lang->line('hris_attendance_shift_daily') . ' ' . $this->lang->line('hris_start')
								, $this->lang->line('hris_attendance_shift_daily') . ' ' . $this->lang->line('hris_end')
								, $this->lang->line('hris_attendance_entry_late')
								, $this->lang->line('hris_attendance_entry_earlyout')
								, $this->lang->line('hris_status')
								, $this->access_rights['DELETE'] ? '&nbsp;' : NULL
							)
						, 'FIELDS' => 'date_in, data__id'
								. ', DATE_FORMAT(date_in_year, "%W, %d %M %Y") as date, time_in, time_out, shift_daily_time_start, shift_daily_time_end'
								. ', timediff(time_in, shift_daily_time_start ) as late, timediff(time_out, shift_daily_time_end) as earlyout'
								. ', (select name from bz_hris_attendance_status where id = b.attendance_status__id) as attendance_status_name'
						, 'FIELDS_EDIT' => ''
						, 'FIELDS_ORDER' => 'date_in_year'
					)
				, 'FORM' => array
					(
						'FIELDS' => 'name_official'
						, 'FIELDS_ORDER' => ''
						, 'COLUMN' => 2
					)
				, 'URL' => array
					(
						'FORM' => $this->bz_segment['SITE_URL'].'/form'
						, 'VIEW' => $this->bz_segment['SITE_URL'].'/view'
					)
			);

		$this->tbl_viewdetail_attr = array
			(
				'NAME' => array
					(
						'SOURCE' => $this->tbl_attr['TABLE_MODAL']['NAME_ALIAS']
						, 'JOIN' => array
							(
								array
									(
										'TABLE' => 'bz_hris_attendance_date_in_year c'
										, 'KEYS' => 'b.date_in = c.date_in_year'
										, 'TYPE' => 'RIGHT'
									)
							)
					)
				, 'PRIMARY' => $this->tbl_attr['TABLE_MODAL']['PRIMARY']
				, 'HEADING' => $this->tbl_attr['VIEW_DETAIL']['HEADING']
				, 'FIELDS' => array
					(
						'NAME' => $this->tbl_attr['VIEW_DETAIL']['FIELDS']
						, 'CAPTION' => $this->tbl_attr['VIEW_DETAIL']['FIELDS_EDIT']
						, 'ORDER' => $this->tbl_attr['VIEW_DETAIL']['FIELDS_ORDER']
					)
				, 'JAVASCRIPT' => array
					(
						'VIEWLIST_GENERATE' => array
							(
								'JS_FUNCTION_NAME' => 'js_modaldialog_data_put'
								, 'JS_FUNCTION_PARAMETERS' => '"'.$this->bz_segment['SITE_URL'].'/ajx_live_form_detail", "frm_modal", "txt1", "txt72", "js_modal_functions", "'.$this->bz_segment['SITE_URL'].'", "ajx_modal_data_", "put"'
							)
					)
			);

		/**
		 * @description template lite variables
		 */
		$this->bz_tlite_var['CACHE_PATH'] = $this->bz_tlite_var['SESSION']['USER_ID'].'|'.str_replace('/', '|', $this->bz_segment['URL']);
		$this->bz_tlite_var['CACHE'] = array
			(
				'PUBLIC' => $this->bz_tlite_var['SESSION']['USER_ID']
				, 'PRIVATE' => array
					(
						'GLOBAL' => $this->bz_tlite_var['CACHE_PATH']
						, 'VIEW' => $this->bz_tlite_var['CACHE_PATH'].'|view'
						, 'FORM' => $this->bz_tlite_var['CACHE_PATH'].'|form'
					)
			);
	}


	/**
	 * @function index()
	 * @description main controller
	 */
	public function index($prm_key = '')
	{
		if ($this->web_data['BISKITZ']['HEADER']['BROWSER_SUPPORTED'] == '')
		{
			/**
			 * @description if there isn't any css/ajax cache, build it! else show cache!
			 */
			if ( ! $this->bz_tlite->is_cached($this->bz_tlite_var['NAMES']['CSS'], $this->bz_tlite_var['CACHE']['PRIVATE']['FORM']))
			{
				/**
				 * @section begin page init
				 */
					/**
					 * @description show the menu
					 */
					$menu = $this->M_menu->shows();
					$this->web_data['JAVASCRIPT_MENU'] = $menu['JAVASCRIPT_MENU'];
					$this->web_data['PAGE']['MENU'] = $menu['PAGE']['MENU'];

					/**
					 * @description init the css and the ajax needed
					 */
					$css_files = array
						(
							array('layout' => 'screen')
							, array('tipsy/tipsy' => 'screen')
							, array('validate/validate' => 'screen')
							, array('form_icon_bar' => 'screen')
							, array('nanoscroller/nanoscroller' => ($menu['PAGE']['MENU']['FAVORITE']['LIST'] != 'Error') ? 'screen' : NULL)
							, array('shortcut_bar' => ($menu['PAGE']['MENU']['FAVORITE']['LIST'] != 'Error') ? 'screen' : NULL)
							, array('dynDateTime/dynDateTime' => 'screen')
							, array('ddm/multi-ddm' => 'screen')
						);
					$js_files = array
						(
							'js/plugins/ddm' => array('jquery.multi-ddm.pack')
							, 'js/plugins/nanoscroller' => ($menu['PAGE']['MENU']['FAVORITE']['LIST'] != 'Error') ? array('jquery.nanoscroller.min', 'overthrow.min') : NULL
							, 'js/plugins/validate' => array('jquery.validate.pack', 'additional-methods', 'jquery.metadata')
							, 'js/plugins/tipsy' => array('jquery.tipsy.pack')
							, 'js/plugins/dynDateTime' => array('jquery.dynDateTime.pack')
							, 'js/plugins/dynDateTime/lang/pack' => array('calendar-'.$this->session->userdata('session_user_language_abbr'))
							, $this->web_data['BISKITZ']['SETTINGS']['BISKITZ_JS_FUNCTIONS_PATH'] => array('common', 'form', 'error', 'datetime_picker')
							, 'themes/'.$this->web_data['BISKITZ']['SETTINGS']['BISKITZ_THEME_ADMIN'].'/'.$this->web_data['BISKITZ']['SETTINGS']['BISKITZ_JS_PATH'] => array('common')
						);
				/**
				 * @section end page init
				 */


				/**
				 * @section begin form initialize
				 */
					/**
					 * @description initialize the form elements
					 */
					$form_content = array
						(
							'<b>'.$this->lang->line('hris_name').'</b>'
							, form_input
								(
									array
									(
										'name' => 'txtinput[0]', 'id' => 'txt0'
										, 'size' => '65', 'maxlength' => '65'
										, 'readOnly' => 'readOnly', 'class' => 'read_only'
									)
								)

							, '<b>'.$this->lang->line('hris_period').'</b>'
							, form_input
								(
									array
									(
										'name' => 'txtinput[1]', 'id' => 'txt1'
										, 'size' => '11', 'maxlength' => '10'
										, 'readOnly' => 'readOnly', 'class' => '{validate: {required: true}} input_calendar do_not_change'
									)
									, date('Y-m-01')
									, 'onBlur="javascript: calendar.hide();"'
								)
								. '&nbsp;' . $this->lang->line('hris_to') . '&nbsp;'
								. form_input
									(
										array
										(
											'name' => 'txtinput[2]', 'id' => 'txt2'
											, 'size' => '11', 'maxlength' => '10'
											, 'readOnly' => 'readOnly', 'class' => '{validate: {required: true}} input_calendar do_not_change'
										)
										, date('Y-m-d')
										, 'onBlur="javascript: calendar.hide();"'
									)


								. form_submit
									(
										array('id' => 'btn_save', 'class' => 'input_not_default input_no_margin')
										, $this->lang->line('button_search')
									)
						);

					/**
					 * @description create the form and elements
					 */
					$table_template = array('table_open' => '<table class = "plain">');
					$this->table->set_template($table_template);

					$form_content = $this->table->make_columns($form_content, $this->tbl_attr['FORM']['COLUMN']);
					$form_content = $this->table->generate($form_content);
				/**
				 * @section end form initialize
				 */



				/**
				 * @section begin generate template variables
				 */
					/**
					 * @description css and ajax
					 */
					$this->web_data['PAGE']['CSS_FILES'] = $this->M_template->css_generate($css_files, $this->web_data['BISKITZ']['SETTINGS']['BISKITZ_THEME_ADMIN']);
					$this->web_data['PAGE']['JAVASCRIPT_FILES'] = $this->M_template->js_generate($js_files);

					/**
					 * @description initialize the additional javascript
					 */
					$this->web_data['JAVASCRIPT'] .= '
						<script>
							$(function()
							{
								$("#btn_save").click
									(function()
									{
										js_form_action
										(
											"'.$this->bz_segment['SITE_URL'].'", "ajx_data_", "put", "'.$this->session->userdata('session_user_id').'"
											, "#frm_header", "#process", "#error_message"
										);
									});

								js_datetime_picker_show("txt1", "txt2");
								js_datetime_picker_show("txt2", "btn_save");

								$("#txt1").focus().select();
					';

					if ($menu['PAGE']['MENU']['FAVORITE']['LIST'] != 'Error')
					{
						$this->web_data['JAVASCRIPT'] .= '$(".nano").nanoScroller({preventPageScrolling: true});';
					}

					$this->web_data['JAVASCRIPT'] .= '
							});
						</script>
					';

					/**
					 * @description menu descriptions
					 */
					$this->web_data['PAGE']['DETAIL'] = $this->M_menu->detail();

					/**
					 * @description icon bar
					 */
					$this->load->model('admin/M_command_bar');
					$this->web_data['PAGE']['ICON_BAR'] = $this->M_command_bar->form('TRUE', FALSE, TRUE, TRUE);

					/**
					 * @description form dialogs
					 */
					$this->web_data['PAGE']['FORM'] = array
						(
							'OPEN' => form_open('', array('id' => 'frm_header', 'onSubmit' => 'return false'), '')
							, 'CONTENT' => $form_content
						);

					/**
					 * @description notes
					 */
					$this->web_data['PAGE']['NOTES'] = array
						(
							'USE' => 'TRUE'
							, 'MESSAGE' => array
								(
									'SHORTCUTS' => $this->lang->line('notes_shortcuts')
									, 'ADDITIONAL' => $this->lang->line('notes_additional_modaldialog')
								)
						);
				/**
				 * @section end generate template variables
				 */
			}



			/**
			 * @description get the data for editing via ajax
			 */
			if ($this->access_rights['EDIT'] && trim($prm_key) != '')
			{
				$this->web_data['JAVASCRIPT_EXTEND'] = '
					<script>
						$(function()
						{
							js_form_action
							(
								"'.$this->bz_segment['SITE_URL'].'", "ajx_data_", "put", "'.$prm_key.'"
								, "#frm_header", "#process", "#error_message"
							);
						});
					</script>
				';
			}


			/**
			 * @description log the action!
			 */
			$this->M_log->write('db_default', sprintf($this->lang->line('log_form_access'), $this->router->class, 'form'));



		}
		else
		{
			/**
			 * @section Browser NOT Supported
			 */
				/**
				 * @description browser not supported message error
				 */
				$css_files = array(array('layout' => 'screen'));


				/**
				 * @section begin generate template variables
				 */
					/**
					 * @description css and ajax
					 */
					$this->web_data['PAGE']['CSS_FILES'] = $this->M_template->css_generate($css_files, $this->web_data['BISKITZ']['SETTINGS']['BISKITZ_THEME_ADMIN']);
				/**
				 * @section end generate template variables
				 */
		}



		/**
		 * @description output template variables
		 */
		$this->bz_tlite->assign('WEB_DATA', $this->web_data);


		/**
		 * @section begin output
		 */
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['HEADER'], $this->bz_tlite_var['CACHE']['PUBLIC']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['CSS'], $this->bz_tlite_var['CACHE']['PRIVATE']['FORM']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['MENU'], $this->bz_tlite_var['CACHE']['PUBLIC']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['CONTENT_DESCRIPTION'], $this->bz_tlite_var['CACHE']['PRIVATE']['GLOBAL']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['CONTENT_FORM'], $this->bz_tlite_var['CACHE']['PRIVATE']['FORM']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['CONTENT_SHORTCUT_BAR'], $this->bz_tlite_var['CACHE']['PUBLIC']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['FOOTER'], $this->bz_tlite_var['CACHE']['PUBLIC']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['JAVASCRIPT'], $this->bz_tlite_var['CACHE']['PRIVATE']['FORM']);
		$this->bz_tlite->display($this->bz_tlite_var['NAMES']['FOOTER_END'], $this->bz_tlite_var['CACHE']['PUBLIC']);
		/**
		 * @section end output
		 */
	}



/**
 * @section AJAX Action Section
 */

	/**
	 * @function ajx_data_put()
	 * @description get the data from database and put them to the form via ajax!
	 */
	public function ajx_data_put($prm_key = '')
	{
		if ($this->input->is_ajax_request() && trim($prm_key) != '')
		{
			/**
			 * @description load the models
			 */
			$this->load->model('admin/M_live_data');
			/**
			 * @description load the helper
			 */
			$this->load->helper('viewlist');


			$return_value = $this->M_live_data->put
				(
					'db_default'
					, $this->tbl_attr['TABLE']['NAME']
					, array('id' => $prm_key)
					, $this->tbl_attr['FORM']['FIELDS']
					, 0, 'log_form_edit', 'form'

					, 'js_action_data_detail'
					, array
						(
							'FUNCTION_NAME' => 'detail_generate'
							, 'FUNCTION_ATTR' => array
								(
									'db_default'
									, $this->tbl_viewdetail_attr
									, '(data__id = "'.$this->session->userdata('session_user_id').'" or data__id is NULL) and date_in_year between "' . $this->input->post('txtinput[1]') . '" and "' . $this->input->post('txtinput[2]') . '"'
									, $this->tbl_viewdetail_attr['JAVASCRIPT']['VIEWLIST_GENERATE']
								)
						)
				);


			$return_value = json_encode($return_value);
			echo $return_value;
		}
	}



}

/** End of file history.php */
/** Location: ./biskitz_mpc/biskitz/controllers/admin/hris/attendance/presence/history.php */
